from socket import *


class Client:
    def __init__(self, host="0.0.0.0", port=65530):
        self.host=host
        self.port=port
        self.ADDR=(host,port)
        self.sock=self.link_sock()


    #创建套接字
    def link_sock(self):
        sock=socket()
        sock.connect(self.ADDR)
        return sock


    #创建第一显示界面
    def one_view(self):
        while True:
            print("""
            ------------------------------------
            |   1.登录      2.注册      3.退出　 |
            ------------------------------------
                    """)
            info=input("请选择:")
            if info == "1":
                self.login()
            if info =="2":
                self.register()
            if info =="3":
                self.sock.send("退出".encode())
                self.sock.close()
                break




    #创建第二显示界面
    def two_view(self,user_name):
        while True:
            print("""
            *******************************************************
            |  1.单词查询       2.历史记录查询          3.注销       |
            *******************************************************
            """)
            info = input("请选择:")
            if info == "1":
                while True:
                    commnet=self.inqure_word(user_name)
                    if commnet == "quit":
                        break
                    if commnet == "bad":
                        print("没有这个单词")
                    else:
                        print("释义",commnet)
            if info == "2":
                history_info=self.history(user_name)
                if not history_info:
                    print("没有记录")
                else:
                    print("历史记录:\n",history_info)
            if info == "3":
                print("退出到登录界面")
                break

    def main(self):
        self.one_view()





    #登录
    def login(self):
        user=input("请输入用户名:")
        password=input("请输入密码:")
        msg=f"LOGIN**&&^^{user}**&&^^{password}"
        self.sock.send(msg.encode())
        data=self.sock.recv(1024).decode()
        if data == "ok":
            self.two_view(user)
        elif data=="bad":
            print("账号密码有误请重新选择")
    #注册

    def register(self):
        user=input("请输入用户名:")
        password=input("请输入密码:")
        msg=f"REGISTER**&&^^{user}**&&^^{password}"
        self.sock.send(msg.encode())
        info = self.sock.recv(1024).decode()
        if info == "ok":
            print("""
            *******************************************************
            | 　　　　　　　　　　　注册成功                          |
            |　　　　　　　　　　　是否直接登录　　　　　　　　          |
            |            请输入: 是  或　 否                        |
            *******************************************************
            """)
            selec=input("请选择:")
            if selec=="是":
                self.two_view(user)
            if selec=="否":
                print("已返回到登录界面")
        elif info == "bad":
             print("账号已注册,请重新注册")


    #查询
    def inqure_word(self,user_name):
        word=input("请输入单词:")
        if word=="" or word == "退出":
            return "quit"
        msg = f"INQUERE**&&^^{user_name}**&&^^{word}"
        self.sock.send(msg.encode())
        info = self.sock.recv(1024).decode()
        if info == "bad":
            return "bad"
        else:
            return info


    #历史记录
    def history(self,user_name):
        msg=f"HISTORY**&&^^{user_name}"
        self.sock.send(msg.encode())
        info = self.sock.recv(1024).decode()
        return info


if __name__=="__main__":
    view=Client(host="127.0.0.1",port=8888)
    view.main()
    print("服务结束")

